/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package binding

import hce.core.support.identification.*
import org.openehr.am.archetype.Archetype

import tablasMaestras.* 

/**
 *
 * @author leacar21
 */
class CtrlTerminologia {
    
    private static final INSTANCE = new CtrlTerminologia()
    public static getInstance(){ return INSTANCE }
    private CtrlTerminologia() {}

    String getTermino(TerminologyID terminologyId, String codigo, Archetype arquetipo)
    {
        switch ( terminologyId.name )
        {
            case "local":
                def archetypeTerm = arquetipo.ontology.termDefinition('es', codigo) // TODO: lenguaje no hardcoded
                if (!archetypeTerm)
                    return "" //El termino con codigo [${code}] no esta definido en el arquetipo, posiblemente el termino no esta definido para el lenguaje seleccionado.<br/>
                else
                    return archetypeTerm.text //archetypeTerm.items.text
            break
            case "cie10":
                // FIXME: optimizacion: usar criteria y un OR.
                def cie10 = Cie10Trauma.findByCodigo( codigo )
                if (!cie10)
                    cie10 = Cie10Trauma.findBySubgrupo( codigo ) // Caso de que se selecciona un subgrupo, no tiene codigo.

                return cie10.nombre
            break
            case "openehr":
                def oehconcept = OpenEHRConcept.findByConceptId( codigo )
                return oehconcept.rubric
            break
        }
        
        // TODO
        // TerminologyID puede no tener version y en name puede venir la version con la siguiente sintaxis: name(version)
        return "Termino Provisorio | Codigo: " + codigo
    }
}

